// pages/list/list.js
const fetch = require('../../utils/fetch')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    //当前加载的分类
    category: {},
    //此分类下的全部店铺
    shops: [],
    _page: 1,
    _limit: 20,
    loadCompleted: false,
    loading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    fetch(`/categories/${options.cat}`).then(data => {
      this.setData({
        category: data
      })
      //需要在onReady之后才能进行title设置，这里可以是因为发送了请求，请求回来时已经执行完onReady
      wx.setNavigationBarTitle({
        title: data.name
      })
      //加载完分类信息再去加载分类信息
      this.loadMore()
    })
  },
  loadMore: function() {
    fetch(`/categories/${this.data.category.id}/shops?_page=${this.data._page}&_limit=${this.data._limit}`).then(data => {
      if (!data.length) {
        this.setData({
          _page: --this.data._page,
          loadCompleted: true
        })
        return
      }
      var newData = this.data.shops.concat(data)
      this.setData({
        shops: newData,
        loading: false
      })
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    //双保险避免onLoad未设置成功
    if (this.data.category.name) {
      wx.setNavigationBarTitle({
        title: this.data.category.name
      })
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
  
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {
  
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {
  
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
  
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    //这里加载下一页
    if (this.data.loadCompleted || this.data.loading) return
    var page = ++this.data._page
    this.setData({
      _page: page,
      loading: true
    })
    this.loadMore()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {
  
  }
})